import { IPSDataEntityObject } from '../ipsdata-entity-object';
import { IPSDEAction } from '../action/ipsdeaction';
import { IPSDEDataImportItem } from './ipsdedata-import-item';
import { IPSSysPFPlugin } from '../../res/ipssys-pfplugin';
import { IPSSysSFPlugin } from '../../res/ipssys-sfplugin';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSDEDataImport
 */
export interface IPSDEDataImport extends IPSDataEntityObject {
  /**
   * 批导入数量
   * @type {number}
   */
  batchSize: number;

  /**
   * 代码标识
   * @type {string}
   */
  codeName: string;

  /**
   * 建立操作标识
   * @type {string}
   */
  createDataAccessAction: string;

  /**
   * 建立数据行为
   *
   * @type {IPSDEAction}
   */
  getCreatePSDEAction(): IPSDEAction | null;

  /**
   * 建立数据行为
   *
   * @type {IPSDEAction}
   */
  get createPSDEAction(): IPSDEAction | null;

  /**
   * 建立数据行为（必须存在）
   *
   * @type {IPSDEAction}
   */
  getCreatePSDEActionMust(): IPSDEAction;

  /**
   * 性能优化预警时长（ms）
   * @type {number}
   * @default -1
   */
  pOTime: number;

  /**
   * 导入项集合
   *
   * @type {IPSDEDataImportItem[]}
   */
  getPSDEDataImportItems(): IPSDEDataImportItem[] | null;

  /**
   * 导入项集合
   *
   * @type {IPSDEDataImportItem[]}
   */
  get psDEDataImportItems(): IPSDEDataImportItem[] | null;

  findPSDEDataImportItem(objKey: any): IPSDEDataImportItem | null;

  /**
   * 前端扩展插件
   *
   * @type {IPSSysPFPlugin}
   */
  getPSSysPFPlugin(): IPSSysPFPlugin | null;

  /**
   * 前端扩展插件
   *
   * @type {IPSSysPFPlugin}
   */
  get psSysPFPlugin(): IPSSysPFPlugin | null;

  /**
   * 前端扩展插件（必须存在）
   *
   * @type {IPSSysPFPlugin}
   */
  getPSSysPFPluginMust(): IPSSysPFPlugin;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  get psSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件（必须存在）
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPluginMust(): IPSSysSFPlugin;

  /**
   * 更新操作标识
   * @type {string}
   */
  updateDataAccessAction: string;

  /**
   * 更新数据行为
   *
   * @type {IPSDEAction}
   */
  getUpdatePSDEAction(): IPSDEAction | null;

  /**
   * 更新数据行为
   *
   * @type {IPSDEAction}
   */
  get updatePSDEAction(): IPSDEAction | null;

  /**
   * 更新数据行为（必须存在）
   *
   * @type {IPSDEAction}
   */
  getUpdatePSDEActionMust(): IPSDEAction;

  /**
   * 默认导入
   * @type {boolean}
   * @default false
   */
  defaultMode: boolean;

  /**
   * 支持后台执行
   * @type {boolean}
   */
  enableBackend: boolean;

  /**
   * 支持前台执行
   * @type {boolean}
   */
  enableFront: boolean;

  /**
   * 忽略导入错误
   * @type {boolean}
   */
  ignoreError: boolean;

  /**
   * 启用
   * @type {boolean}
   * @default true
   */
  valid: boolean;
}
